/**
 * Created by Leslie on 2017/6/20.
 */

var gulp = require('gulp'),                             // 引入gulp模块
    less = require('gulp-less'),                        // 引入less编译模块
    jshint = require('gulp-jshint'),                    // 检查js语法是否错误
    autoprefixer = require('gulp-autoprefixer'),        // 引入自动添加前缀插件
    imagemin = require('gulp-imagemin'),                // 引入压缩图片的模块
    concat = require('gulp-concat'),                    // 引入合并内容模块
    cssversion = require('gulp-make-css-url-version'),  // css版本号
    minifycss = require('gulp-minify-css'),             // 引入css压缩模块
    rename = require('gulp-rename'),                    // 引入重命名模块
    uglify = require('gulp-uglify'),                    // 引入js压缩模块
    clean = require('gulp-clean'),                      // 引入clean清楚模块
    replace = require('gulp-replace');                  // 引入replace替换模块


// task:创建任务
/*
gulp.task('less', function () {
    // src: 查找资源
    gulp.src('./src/less/index.less')
        .pipe(less()) // less(): 编译less
        .pipe(gulp.dest('./dist/css')) // 最终文件存放的目录
    // 监听*.less文件，一旦修改，自动执行less任务
    gulp.watch('./src/less/!*.less', ['less']);
});
*/


/*gulp.task('default', ['less'], function () {
    console.log('default task executed');
});*/

// 自动添加less前缀
/*
gulp.task('autoprefixer', function () {
    gulp.src('./src/less/!*.less')
        .pipe(autoprefixer({browsers: ['last 2 versions', 'Android >= 4.0']}))
        .pipe(gulp.dest('./static/less'))
});

gulp.task('autocss', function () {
    gulp.src('./src/less/!*.less')
        .pipe(autoprefixer({
            browsers: ['last 2 versions', 'Android >= 4.0'],
            cascade: true, //是否美化属性值 默认：true 像这样：
            //-webkit-transform: rotate(45deg);
            //        transform: rotate(45deg);
            remove: true //是否去掉不必要的前缀 默认：true
        }))
        .pipe(gulp.dest('./static/less'))
});
*/

//定义检查js语法错误
gulp.task('checkJs', function () {
    gulp.src('./src/js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});


//定义压缩图片文件任务
gulp.task('imgMin', function () {
    gulp.src('./src/images/*.*')
        .pipe(imagemin())
        .pipe(gulp.dest('./dist/images'));
});

//合并-压缩-重命名-css
gulp.task('min-concat-rename-css', function () {
    gulp.src(['./static/css/*.css'])
        .pipe(concat('main.css'))//合并成main.css
        // .pipe(cssversion())  //css路径加一个版本号
        .pipe(gulp.dest('./static/css'))// 输出一个路径
        .pipe(rename({"suffix": ".min"}))//重命名  main.min.css
        .pipe(minifycss()) //对这个css做压缩处理
        .pipe(gulp.dest('./static/css')); //输出
});

//压缩合并重命名js
gulp.task('min-uglify-rename-js', function () {
    return gulp.src(['./src/js/*.js', './src/js/*/*.js'])
        .pipe(concat('main.js'))
        .pipe(gulp.dest('./dist/js')) // main.js
        .pipe(uglify()) // 压缩js
        .pipe(rename({"suffix": ".min"}))//重命名  main.min.js
        .pipe(gulp.dest('./dist/js'));
});

//清除dist文件夹内容
gulp.task('clean', function () {
    return gulp.src(['./dist/*'])
        .pipe(clean());
});

//替换文件的版本号
gulp.task('change-html-ver', function () {
    gulp.src(['./src/*.html', './src/templates/*.html'], {base: './src'})
        .pipe(replace(/_v=[0-9]{1,}/g, "_v=" + new Date().getTime()))
        .pipe(gulp.dest('./src/'));
});

gulp.task('change-js-ver', function () {
    gulp.src(['./src/js/index.js'])
        .pipe(replace(/_v=[0-9]{1,}/g, '_v=' + new Date().getTime()))
        .pipe(gulp.dest('./src/js/'));
});

//复制外部包文件
gulp.task('copy-package', function () {
    gulp.src(['./component/**'], {base: './src'})
        .pipe(gulp.dest( './dist'));
});

//复制html
gulp.task('copy-html', ['cver'], function () {
    gulp.src(['./src/*.html','./src/templates/*'], {base: './src'})
        .pipe(gulp.dest('./dist'));
});

//处理css
gulp.task('css', ['min-concat-rename-css']);

//处理js
gulp.task('js', ['min-uglify-rename-js']);

//更改版本号
gulp.task('cver', ['change-html-ver', 'change-js-ver']);

// 监听html，同时替换版本
gulp.task('w-cver', function () {
    gulp.watch(['./src/*.*', './src/templates/*.*'], function () {
        gulp.start('cver');
    });
});

//全部处理//编译版本
// gulp.task('build', ['clean'], function () {
//     gulp.start('copy-package', 'copy-html', 'js', 'css');
// });

gulp.task('build', function () {
    gulp.start('css');
});